package pathArray

import (
	"errors"
	"strings"
)

// PathArray path解析数组
// 支持如下格式
// //a = /a
// ////a///b = /a/b
// //a//b///c/// = /a/b/c/
type PathArray []string

func Parse(pathStr string) (PathArray, error) {
	if len(pathStr) < 1 || pathStr[0] != '/' {
		return nil, errors.New("path必须以/开始")
	}
	var pathArray = PathArray{"/"}
	for i := 1; i < len(pathStr); i++ {
		if pathStr[i] != '/' {
			if i == len(pathStr)-1 {
				pathArray = append(pathArray, pathStr[i:])
			}
			for j := i + 1; j < len(pathStr); j++ {
				if pathStr[j] == '/' {
					pathArray = append(pathArray, pathStr[i:j])
					i = j
					break
				} else if j == len(pathStr)-1 {
					pathArray = append(pathArray, pathStr[i:])
					i = j
				}
			}
		}
	}

	return pathArray, nil
}
func FormatPath(pathArr PathArray) string {
	var builder strings.Builder
	for i := 0; i < len(pathArr); i++ {
		builder.WriteString(pathArr[i])
		if i > 0 && i < len(pathArr)-1 {
			builder.WriteString("/")
		}
	}
	return builder.String()
}
